JsonRequest.openWebSocket   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 9
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
/**
2
 * EGroupware clientside API TypeScript interface
3
 *
4
 * Manually compiled from various JavaScript files in api/js/jsapi.
5
 *
6
 * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
7
 * @package api
8
 * @subpackage api
9
 * @link https://www.egroupware.org
10
 * @author Ralf Becker <[email protected]>
11
 * @author Hadi Natheg <[email protected]>
12
 * @author Nathan Gray <[email protected]>
13
 * @author Andreas Stöckel
14
 */
15
16
/**
17
 * Global egw object (for now created by the diverse JavaScript files) with a TypeScript interface
18
 */
19
declare var egw : Iegw;
20
21
/**
22
 * Interface for global egw with window global or local methods or as function returning an object allowing also application local methods
23
 */
24
declare interface Iegw extends IegwWndLocal { (_app? : string|Window, _wnd? : Window) : IegwAppLocal }
25
26
/**
27
 * Return type for egw.app() call
28
 */
29
declare interface Iapplication
30
{
31
	title     : string;	// application title untranslated, better use egw.lang(app.name)
32
	name      : string;	// app-name
33
	enabled   : number;
34
	status    : number;
35
	id        : number;
36
	order     : number;
37
	version   : string;
38
	index?    : string;
39
	icon?     : string;
40
	icon_app? : string;
41
}
42
43
/**
44
 * Data stored by egw_data
45
 */
46
declare interface IegwData
47
{
48
	timestamp?: number;
49
	data: {[key:string]: any};
50
}
51
52
/**
53
 * Interface for all window global methods (existing only in top window)
54
 */
55
declare interface IegwGlobal
56
{
57
	/**
58
	 * Base URL of EGroupware install "/egroupware" or full URL incl. schema and domain
59
	 */
60
	webserverUrl : string;
61
62
	/**
63
	 * implemented in egw_config.js
64
	 */
65
	/**
66
	 * Query clientside config
67
	 *
68
	 * @param {string} _name name of config variable
69
	 * @param {string} _app default "phpgwapi"
70
	 * @return mixed
71
	 */
72
	config(_name: string, _app?: string) : any;
73
74
	/**
75
	 * Set clientside configuration for all apps
76
	 *
77
	 * @param {object} _configs
78
	 * @param {boolean} _need_clone _configs need to be cloned, as it is from different window context
79
	 *	and therefore will be inaccessible in IE, after that window is closed
80
	 */
81
	set_configs(_configs: object, _need_clone?: boolean) : void;
82
83
	/**
84
	 * implemeneted in egw_data.js
85
	 */
86
	/**
87
	 * Registers the intrest in a certain uid for a callback function. If
88
	 * the data for that uid changes or gets loaded, the given callback
89
	 * function is called. If the data for the given uid is available at the
90
	 * time of registering the callback, the callback is called immediately.
91
	 *
92
	 * @param _uid is the uid for which the callback should be registered.
93
	 * @param _callback is the callback which should get called.
94
	 * @param _context is the optional context in which the callback will be
95
	 * executed
96
	 * @param _execId is the exec id which will be used in case the data is
97
	 * not available
98
	 * @param _widgetId is the widget id which will be used in case the uid
99
	 * has to be fetched.
100
	 */
101
	dataRegisterUID(_uid : string, _callback : Function, _context, _execId : string, _widgetId : string) : void;
102
	/**
103
	 * Unregisters the intrest of updates for a certain data uid.
104
	 *
105
	 * @param _uid is the data uid for which the callbacks should be
106
	 * 	unregistered.
107
	 * @param _callback specifies the specific callback that should be
108
	 * 	unregistered. If it evaluates to false, all callbacks (or those
109
	 * 	matching the optionally given context) are removed.
110
	 * @param _context specifies the callback context that should be
111
	 * 	unregistered. If it evaluates to false, all callbacks (or those
112
	 * 	matching the optionally given callback function) are removed.
113
	 */
114
	dataUnregisterUID(_uid : string, _callback : Function, _context) : void;
115
	/**
116
	 * Returns whether data is available for the given uid.
117
	 *
118
	 * @param _uid is the uid for which should be checked whether it has some
119
	 * 	data.
120
	 */
121
	dataHasUID(_uid : string) : boolean;
122
	/**
123
	 * Returns data of a given uid.
124
	 *
125
	 * @param _uid is the uid for which should be checked whether it has some
126
	 * 	data.
127
	 */
128
	dataGetUIDdata(_uid : string) : IegwData;
129
	/**
130
	 * Returns all uids that have the given prefix
131
	 *
132
	 * @param {string} _prefix
133
	 * @return {array} of uids
134
	 * TODO: Improve this
135
	 */
136
	dataKnownUIDs(_prefix : string) : string[];
137
	/**
138
	 * Stores data for the uid and calls all callback functions registered
139
	 * for that uid.
140
	 *
141
	 * @param _uid is the uid for which the data should be saved.
142
	 * @param _data is the data which should be saved.
143
	 */
144
	dataStoreUID(_uid : string, _data : object) : void;
145
	/**
146
	 * Deletes the data for a certain uid from the local storage and
147
	 * unregisters all callback functions associated to it.
148
	 *
149
	 * This does NOT update nextmatch!
150
	 * Application code should use: egw(window).refresh(msg, app, id, "delete");
151
	 *
152
	 * @param _uid is the uid which should be deleted.
153
	 */
154
	dataDeleteUID(_uid : string) : void;
155
	/**
156
	 * Force a refreash of the given uid from the server if known, and
157
	 * calls all associated callbacks.
158
	 *
159
	 * If the UID does not have any registered callbacks, it cannot be refreshed because the required
160
	 * execID and context are missing.
161
	 *
162
	 * @param {string} _uid is the uid which should be refreshed.
163
	 * @return {boolean} True if the uid is known and can be refreshed, false if unknown and will not be refreshed
164
	 */
165
	dataRefreshUID(_uid : string) : boolean;
166
	/**
167
	 * Search for exact UID string or regular expression and return widgets using it
168
	 *
169
	 * @param {string|RegExp} _uid is the uid which should be refreshed.
170
	 * @return {object} UID: array of (nextmatch-)wigetIds
171
	 */
172
	dataSearchUIDs(_uid : string|RegExp) : /*et2_nextmatch*/any[];
173
	/**
174
	 * Search for exact UID string or regular expression and call registered (nextmatch-)widgets refresh function with given _type
175
	 *
176
	 * This method is preferable over dataRefreshUID for app code, as it takes care of things like counters too.
177
	 *
178
	 * It does not do anything for _type="add"!
179
	 *
180
	 * @param {string|RegExp} _uid is the uid which should be refreshed.
181
	 * @param {string} _type "delete", "edit", "update", not useful for "add"!
182
	 * @return {array} (nextmatch-)wigets refreshed
183
	 */
184
	dataRefreshUIDs(_uid : string|RegExp, _type : "delete"|"edit"|"update") : /*et2_nextmatch*/any[];
185
186
	/**
187
	 * implemented in egw_debug.js
188
	 */
189
	/**
190
	 * Return current log-level
191
	 */
192
	debug_level() : number;
193
	/**
194
	 * The debug function can be used to send a debug message to the
195
	 * java script console. The first parameter specifies the debug
196
	 * level, all other parameters are passed to the corresponding
197
	 * console function.
198
	 *
199
	 * @param {String} _level "navigation", "log", "info", "warn", "error"
200
	 * @param args arguments to egw.debug
201
	 */
202
	debug(_level : "navigation"|"log"|"info"|"warn"|"error", ...args : any[]) : void;
203
	/**
204
	 * Display log to user because he clicked on icon showed by raise_error
205
	 *
206
	 * @returns {undefined}
207
	 */
208
	show_log() : void;
209
210
	/**
211
	 * implemented in egw_images.js
212
	 */
213
	/**
214
	 * Set imagemap, called from /api/images.php
215
	 *
216
	 * @param {array|object} _images
217
	 * @param {boolean} _need_clone _images need to be cloned, as it is from different window context
218
	 *	and therefore will be inaccessible in IE, after that window is closed
219
	 */
220
	set_images(_images: object, _need_clone? : boolean);
221
	/**
222
	 * Get image URL for a given image-name and application
223
	 *
224
	 * @param {string} _name image-name without extension
225
	 * @param {string} _app application name, default current app of window
226
	 * @return string with URL of image
227
	 */
228
	image(_name : string, _app? : string) : string;
229
	/**
230
	 * Get image url for a given mime-type and option file
231
	 *
232
	 * @param {string} _mime
233
	 * @param {string} _path vfs path to generate thumbnails for images
234
	 * @param {number} _size defaults to 128 (only supported size currently)
235
	 * @param {number} _mtime current modification time of file to allow infinit caching as url changes
236
	 * @returns url of image
237
	 */
238
	mime_icon(_mime : string, _path? : string, _size? : number, _mtime? : number) : string;
239
	/**
240
	 * Create DOM img or svn element depending on url
241
	 *
242
	 * @param {string} _url source url
243
	 * @param {string} _alt alt attribute for img tag
244
	 * @returns DOM node
245
	 */
246
	image_element(_url : string, _alt? : string) : HTMLImageElement;
247
248
	/**
249
	 * implemented in egw_lang.js
250
	 */
251
	/**
252
	 * Set translation for a given application
253
	 *
254
	 * @param {string} _app
255
	 * @param {object} _messages message => translation pairs
256
	 * @param {boolean} _need_clone _messages need to be cloned, as it is from different window context
257
	 *	and therefore will be inaccessible in IE, after that window is closed
258
	 */
259
	set_lang_arr(_app : string, _messages : object, _need_clone? : true) : void;
260
	/**
261
	 * Translate a given phrase replacing optional placeholders
262
	 *
263
	 * @param {string} _msg message to translate
264
	 * @param _args optional parameters (%{number} replacements)
265
	 * @return {string}
266
	 */
267
	lang(_msg : string, ..._args : string[]) : string;
268
	/**
269
	 * Load default langfiles for an application: common, _appname, custom
270
	 *
271
	 * @param {Window} _window
272
	 * @param {string} _appname name of application to load translations for
273
	 * @param {function} _callback
274
	 * @param {object} _context
275
	 */
276
	langRequireApp(_window : Window, _appname : string, _callback? : Function, _context? : object) : void;
277
	/**
278
	 * Includes the language files for the given applications -- if those
279
	 * do not already exist, include them.
280
	 *
281
	 * @param {Window} _window is the window which needs the language -- this is
282
	 * 	needed as the "ready" event has to be postponed in that window until
283
	 * 	all lang files are included.
284
	 * @param {array} _apps is an array containing the applications for which the
285
	 * 	data is needed as objects of the following form:
286
	 * 		{
287
	 * 			app: <APPLICATION NAME>,
288
	 * 			lang: <LANGUAGE CODE>
289
	 * 		}
290
	 * @param {function} _callback called after loading, if not given ready event will be postponed instead
291
	 * @param {object} _context for callback
292
	 */
293
	langRequire(_window : Window, _apps : {app: string, lang: string}[], _callback? : Function, _context? : object) : void;
294
	/**
295
	 * Check if $app is in the registry and has an entry for $name
296
	 *
297
	 * @param {string} _app app-name
298
	 * @param {string} _name name / key in the registry, eg. 'view'
299
	 * @return {string|object|boolean} false if $app is not registered, otherwise string with the value for $name
300
	 */
301
	link_get_registry(_app : string, _name : string) : string|object|boolean;
302
	/**
303
	 * Get mime-type information from app-registry
304
	 *
305
	 * We prefer a full match over a wildcard like 'text/*' (written as regualr expr. "/^text\\//"
306
	 *
307
	 * @param {string} _type
308
	 * @return {object} with values for keys 'menuaction', 'mime_id' (path) or 'mime_url' and options 'mime_popup' and other values to pass one
309
	 */
310
	get_mime_info(_type : string) : {menuaction : string, mime_id? : string, mime_url? : string, mime_popup? : string}|null;
311
	/**
312
	 * Get handler (link-data) for given path and mime-type
313
	 *
314
	 * @param {string|object} _path vfs path, egw_link::set_data() id or
315
	 *	object with attr path, optinal download_url or id, app2 and id2 (path=/apps/app2/id2/id)
316
	 * @param {string} _type mime-type, if not given in _path object
317
	 * @return {string|object} string with EGw relative link, array with get-parameters for '/index.php' or null (directory and not filemanager access)
318
	 */
319
	mime_open(_path : string|object, _type : string) : string|object;
320
	/**
321
	 * Get list of link-aware apps the user has rights to use
322
	 *
323
	 * @param {string} _must_support capability the apps need to support, eg. 'add', default ''=list all apps
324
	 * @return {object} with app => title pairs
325
	 */
326
	link_app_list(_must_support? : string) : object;
327
	/**
328
	 * Set link registry
329
	 *
330
	 * @param {object} _registry whole registry or entries for just one app
331
	 * @param {string} _app
332
	 * @param {boolean} _need_clone _images need to be cloned, as it is from different window context
333
	 *	and therefore will be inaccessible in IE, after that window is closed
334
	 */
335
	set_link_registry(_registry : object, _app? : string, _need_clone? : boolean) : void;
336
	/**
337
	 * Generate a url with get parameters
338
	 *
339
	 * Please note, the values of the query get url encoded!
340
	 *
341
	 * @param {string} _url a url relative to the egroupware install root, it can contain a query too or
342
	 *	full url containing a schema and "://"
343
	 * @param {object|string} _extravars query string arguements as string or array (prefered)
344
	 * 	if string is used ambersands in vars have to be already urlencoded as '%26', function ensures they get NOT double encoded
345
	 * @return {string} generated url
346
	 */
347
	link(_url : string, _extravars? : string|object) : string;
348
	/**
349
	 * Query a title of _app/_id
350
	 *
351
	 * @param {string} _app
352
	 * @param {string|number} _id
353
	 * @param {function} _callback optinal callback, required if for responses from the server
354
	 * @param {object} _context context for the callback
355
	 * @param {boolean} _force_reload true load again from server, even if already cached
356
	 * @return {string|null} string with title if it exist in local cache or null if not
357
	 */
358
	link_title(_app : string, _id : string|number, _callback? : Function, _context? : object, _force_reload? : boolean) : string|null;
359
	/**
360
	 * Callback to add all current title requests
361
	 *
362
	 * @param {object} _params of parameters, only first parameter is used
363
	 */
364
	// internal: link_title_before_send(_params : string[]) : void;
365
	/**
366
	 * Callback for server response
367
	 *
368
	 * @param {object} _response _app => _id => title
369
	 */
370
	// internal: link_title_callback(_response : object)
371
	/**
372
	 * Create quick add selectbox
373
	 *
374
	 * @param {HTMLElement|string} _parent parent or selector of it to create selectbox in
375
	 */
376
	link_quick_add(_parent : HTMLElement|string) : void;
377
378
	/**
379
	 * implemented in egw_preferences.js
380
	 */
381
	/**
382
	 * Setting prefs for an app or 'common'
383
	 *
384
	 * @param {object} _data object with name: value pairs to set
385
	 * @param {string} _app application name, 'common' or undefined to prefes of all apps at once
386
	 * @param {boolean} _need_clone _data need to be cloned, as it is from different window context
387
	 *	and therefore will be inaccessible in IE, after that window is closed
388
	 */
389
	set_preferences(_data : object, _app? : string, _need_clone? : boolean) : void;
390
	/**
391
	 * Query an EGroupware user preference
392
	 *
393
	 * If a prefernce is not already loaded (only done for "common" by default), it is synchroniosly queryed from the server!
394
	 *
395
	 * @param {string} _name name of the preference, eg. 'dateformat', or '*' to get all the application's preferences
396
	 * @param {string} _app default 'common'
397
	 * @param {function|undefined} _callback optional callback, if preference needs loading first
398
	 * if false given and preference is not loaded, undefined is return and no (synchronious) request is send to server
399
	 * @param {object} _context context for callback
400
	 * @return string|object|bool preference value or false, if callback given and preference not yet loaded
401
	 *  of object with all prefs for _name="*"
402
	 */
403
	preference(_name : string, _app? : string, _callback? : Function, _context? : object) : string|object|boolean;
404
	/**
405
	 * Set a preference and sends it to the server
406
	 *
407
	 * Server will silently ignore setting preferences, if user has no right to do so!
408
	 *
409
	 * Preferences are only send to server, if they are changed!
410
	 *
411
	 * @param {string} _app application name or "common"
412
	 * @param {string} _name name of the pref
413
	 * @param _val value of the pref, null, undefined or "" to unset it
414
	 * @param {function} _callback Function passed along to the queue, called after preference is set server-side,
415
	 *	IF the preference is changed / has a value different from the current one
416
	 */
417
	set_preference(_app : string, _name : string, _val : any, _callback? : Function) : void;
418
	/**
419
	 * Call context / open app specific preferences function
420
	 *
421
	 * @param {string} name type 'acl', 'prefs', or 'cats'
422
	 * @param {(array|object)} apps array with apps allowing to call that type, or object/hash with app and boolean or hash with url-params
423
	 */
424
	show_preferences(name : "acl"|"prefs"|"cats", apps : object|string[]) : void;
425
	/**
426
	 * Setting prefs for an app or 'common'
427
	 *
428
	 * @param {object} _data
429
	 * @param {string} _app application name or undefined to set grants of all apps at once
430
	 *	and therefore will be inaccessible in IE, after that window is closed
431
	 */
432
	set_grants(_data : object, _app? : string) : void;
433
	/**
434
	 * Query an EGroupware user preference
435
	 *
436
	 * We currently load grants from all apps in egw.js, so no need for a callback or promise.
437
	 *
438
	 * @param {string} _app app-name
439
	 * @ param {function|false|undefined} _callback optional callback, if preference needs loading first
440
	 * if false given and preference is not loaded, undefined is return and no (synchronious) request is send to server
441
	 * @ param {object} _context context for callback
442
	 * @return grant object, false if not (yet) loaded and no callback or undefined
443
	 */
444
	grants(_app : string) /*, _callback, _context)*/ : any;
445
446
	/**
447
	 * implemented in egw_store.js
448
	 */
449
	/**
450
	 * Retrieve a value from session storage
451
	 *
452
	 * @param {string} application Name of application, or common
453
	 * @param {string} key
454
	 * @returns {string|null}
455
	 */
456
	getSessionItem(application : string, key : string) : string;
457
	/**
458
	 * Set a value in session storage
459
	 *
460
	 * @param {string} application Name of application, or common
461
	 * @param {string} key
462
	 * @param {string} value
463
	 */
464
	setSessionItem(application : string, key : string, value : string) : void;
465
	/**
466
	 * Remove a value from session storage
467
	 * @param {string} application
468
	 * @param {string} key
469
	 */
470
	removeSessionItem(application : string, key : string) : void;
471
	/**
472
	 * Set an item to localStorage
473
	 *
474
	 * @param {string} application an application name or a prefix
475
	 * @param {string} item
476
	 * @param {string} value
477
	 * @returns {undefined} returns undefined
478
	 */
479
	setLocalStorageItem(application : string, item : string, value : string);
480
	/**
481
	 * Get an item from localStorage
482
	 *
483
	 * @param {string} application an application name or prefix
484
	 * @param {string} item an item name stored in localStorage
485
	 * @return {string|null} reutrns requested item value otherwise null
486
	 */
487
	getLocalStorageItem(application : string, item : string) : string|null;
488
	/**
489
	 * Remove an item from localStorage
490
	 *
491
	 * @param {string} application application name or prefix
492
	 * @param {string} item an item name to remove
493
	 */
494
	removeLocalStorageItem(application : string, item : string) : void;
495
496
	/**
497
	 * implemented in egw_user.js
498
	 */
499
	/**
500
	 * Set data of current user
501
	 *
502
	 * @param {object} _data
503
	 * @param {boolean} _need_clone _data need to be cloned, as it is from different window context
504
	 *	and therefore will be inaccessible in IE, after that window is closed
505
	 */
506
	set_user(_data : object, _need_clone? : boolean) : void;
507
	/**
508
	 * Get data about current user
509
	 *
510
	 * @param {string} _field
511
	 * - 'account_id','account_lid','person_id','account_status',
512
	 * - 'account_firstname','account_lastname','account_email','account_fullname','account_phone'
513
	 * - 'apps': object with app => data pairs the user has run-rights for
514
	 * @return {string|array|null}
515
	 */
516
	user(_field : string) : any;
517
	/**
518
	 * Return data of apps the user has rights to run
519
	 *
520
	 * Can be used the check of run rights like: if (egw.app('addressbook')) { do something if user has addressbook rights }
521
	 *
522
	 * @param {string} _app
523
	 * @param {string} _name attribute to return, default return whole app-data-object
524
	 * @return Iapplication|string|undefined undefined if not found
525
	 */
526
	app(_app : string, _name : string) : string|undefined;
527
	app(_app : string) : Iapplication|undefined;
528
	/**
529
	 * Get a list of accounts the user has access to
530
	 * The list is filtered by type, one of 'accounts','groups','both', 'owngroups'
531
	 *
532
	 * @param {string} type
533
	 * @returns {array}
534
	 */
535
	accounts(type : "accounts"|"groups"|"both"|"owngroups") : object[];
536
	/**
537
	 * Get account-infos for given numerical _account_ids
538
	 *
539
	 * @param {int|array} _account_ids
540
	 * @param {string} _field default 'account_email'
541
	 * @param {boolean} _resolve_groups true: return attribute for all members, false: return attribute of group
542
	 * @param {function} _callback
543
	 * @param {object} _context
544
	 */
545
	accountData(_account_ids : number|number[], _field : string, _resolve_groups : boolean, 
546
				_callback : Function, _context : object) : void;
547
	/**
548
	 * Set account data.  This one can be called from the server to pre-fill the cache.
549
	 *
550
	 * @param {object} _data account_id => value pairs
551
	 * @param {String} _field
552
	 */
553
	set_account_cache(_data : object, _field : string) : void;
554
	/**
555
	 * Set specified account-data of selected user in an other widget
556
	 *
557
	 * Used eg. in template as: onchange="egw.set_account_data(widget, 'target', 'account_email')"
558
	 *
559
	 * @param {et2_widget} _src_widget widget to select the user
560
	 * @param {string} _target_name name of widget to set the data
561
	 * @param {string} _field name of data to set eg. "account_email" or "{account_fullname} <{account_email}>"
562
	 */
563
	set_account_data(_src_widget : /*et2_widget*/object, _target_name : string, _field : string) : void;
564
	/**
565
	 * Invalidate client-side account cache
566
	 *
567
	 * For _type == "add" we invalidate the whole cache currently.
568
	 *
569
	 * @param {number} _id nummeric account_id, !_id will invalidate whole cache
570
	 * @param {string} _type "add", "delete", "update" or "edit"
571
	 */
572
	invalidate_account(_id? : number, _type? : "add"|"delete"|"update"|"edit") : void;
573
574
	/**
575
	 * implemented in egw_utils.js
576
	 */
577
	/**
578
	 * Get url for ajax request
579
	 *
580
	 * @param _menuaction
581
	 * @return full url incl. webserver_url
582
	 */
583
	ajaxUrl(_menuaction : string) : string;
584
	/**
585
	 * Get window of element
586
	 *
587
	 * @param _elem
588
	 */
589
	elemWindow(_elem : HTMLElement) : Window;
590
	/**
591
	 * Get unique identifier
592
	 *
593
	 * @return {string} hex encoded, per call incremented counter
594
	 */
595
	uid() : string;
596
	/**
597
	 * Decode encoded vfs special chars
598
	 *
599
	 * @param {string} _path path to decode
600
	 * @return {string}
601
	 */
602
	decodePath(_path : string) : string;
603
	/**
604
	 * Encode vfs special chars excluding /
605
	 *
606
	 * @param {string} _path path to decode
607
	 * @return {string}
608
	 */
609
	encodePath(_path : string) : string;
610
	/**
611
	 * Encode vfs special chars removing /
612
	 *
613
	 * '%' => '%25',
614
	 * '#' => '%23',
615
	 * '?' => '%3F',
616
	 * '/' => '',	// better remove it completly
617
	 *
618
	 * @param {string} _comp path to decode
619
	 * @return {string}
620
	 */
621
	encodePathComponent(_comp : string) : string;
622
	/**
623
	 * Escape HTML special chars, just like PHP
624
	 *
625
	 * @param {string} s String to encode
626
	 *
627
	 * @return {string}
628
	 */
629
	htmlspecialchars(s : string) : string;
630
	/**
631
	 * If an element has display: none (or a parent like that), it has no size.
632
	 * Use this to get its dimensions anyway.
633
	 *
634
	 * @param element HTML element
635
	 * @param boolOuter Pass true to get outerWidth() / outerHeight() instead of width() / height()
636
	 *
637
	 * @return Object [w: width, h: height]
638
	 *
639
	 * @author Ryan Wheale
640
	 * @see http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/
641
	 */
642
	getHiddenDimensions(element : HTMLElement, boolOuter? : boolean) : {h: number, w: number, top: number, left: number};
643
	/**
644
	 * Store a window's name in egw.store so we can have a list of open windows
645
	 *
646
	 * @param {string} appname
647
	 * @param {Window} popup
648
	 */
649
	storeWindow(appname: boolean, popup : Window) : void;
650
	/**
651
	 * Get a list of the names of open popups
652
	 *
653
	 * Using the name, you can get a reference to the popup using:
654
	 * window.open('', name);
655
	 * Popups that were not given a name when they were opened are not tracked.
656
	 *
657
	 * @param {string} appname Application that owns/opened the popup
658
	 * @param {string} regex Optionally filter names by the given regular expression
659
	 *
660
	 * @returns {string[]} List of window names
661
	 */
662
	getOpenWindows(appname : string, regex? : string) : string[];
663
	/**
664
	 * Notify egw of closing a named window, which removes it from the list
665
	 *
666
	 * @param {String} appname
667
	 * @param {Window|String} closed Window that was closed, or its name
668
	 */
669
	windowClosed(appname : string, closed : Window|string) : void;
670
}
671
672
declare class JsonRequest
673
{
674
	/**
675
	 * Sends the assembled request to the server
676
	 * @param {boolean|"keepalive"} _async true: asynchronious request, false: synchronious request,
677
	 * 	"keepalive": async. request with keepalive===true / sendBeacon, to be used in beforeunload event
678
	 * @param {string} method ='POST' allow to eg. use a (cachable) 'GET' request instead of POST
679
	 * @param {function} error option error callback(_xmlhttp, _err) used instead our default this.error
680
	 *
681
	 * @return {jqXHR} jQuery jqXHR request object
682
	 */
683
	sendRequest(async? : boolean|"keepalive", method? : "POST"|"GET", error? : Function)
684
	/**
685
	 * Open websocket to push server (and keeps it open)
686
	 *
687
	 * @param {string} url this.websocket(s)://host:port
688
	 * @param {array} tokens tokens to subscribe too
689
	 * @param {function} error option error callback(_msg) used instead our default this.error
690
	 * @param {int} reconnect timeout in ms (internal)
691
	 */
692
	openWebSocket(url : string, tokens : string[], error : Function, reconnect : number);
693
}
694
695
/**
696
 * Interface for window local methods (plus the global ones)
697
 */
698
declare interface IegwWndLocal extends IegwGlobal
699
{
700
	window : Window;
701
	/**
702
	 * implemented in egw_css.js
703
	 */
704
	/**
705
	 * The css function can be used to introduce a rule for the given css
706
	 * selector. So you're capable of adding new custom css selector while
707
	 * runtime and also update them.
708
	 *
709
	 * @param _selector is the css select which can be used to apply the
710
	 * 	stlyes to the html elements.
711
	 * @param _rule is the rule which should be connected to the selector.
712
	 * 	if empty or omitted, the given selector gets removed.
713
	 */
714
	css(_selector : string, _rule? : string);
715
716
	/**
717
	 * implemented in egw_json.js
718
	 */
719
	/** The constructor of the egw_json_request class.
720
	 *
721
	 * @param _menuaction the menuaction function which should be called and
722
	 * 	which handles the actual request. If the menuaction is a full featured
723
	 * 	url, this one will be used instead.
724
	 * @param _parameters which should be passed to the menuaction function.
725
	 * @param {boolean|"keepalive"} _async true: asynchronious request, false: synchronious request,
726
	 * 	"keepalive": async. request with keepalive===true / sendBeacon, to be used in beforeunload event
727
	 * @param _callback specifies the callback function which should be
728
	 * 	called, once the request has been sucessfully executed.
729
	 * @param _context is the context which will be used for the callback function
730
	 * @param _sender is a parameter being passed to the _callback function
731
	 */
732
	json(_menuaction : string, _parameters? : any[], _callback? : Function, _context? : object, _async? : boolean|"keepalive", _sender?) : JsonRequest;
733
	/**
734
	 * Registers a new handler plugin.
735
	 *
736
	 * @param _callback is the callback function which should be called
737
	 * 	whenever a response is comming from the server.
738
	 * @param _context is the context in which the callback function should
739
	 * 	be called. If null is given, the plugin is executed in the context
740
	 * 	of the request object context.
741
	 * @param _type is an optional parameter defaulting to 'global'.
742
	 * 	it describes the response type which this plugin should be
743
	 * 	handling.
744
	 * @param {boolean} [_global=false] Register the handler globally or
745
	 *	locally.  Global handlers must stay around, so should be used
746
	 *	for global modules.
747
	 */
748
	registerJSONPlugin(_callback : Function, _context, _type, _global);
749
	/**
750
	 * Removes a previously registered plugin.
751
	 *
752
	 * @param _callback is the callback function which should be called
753
	 * 	whenever a response is comming from the server.
754
	 * @param _context is the context in which the callback function should
755
	 * 	be called.
756
	 * @param _type is an optional parameter defaulting to 'global'.
757
	 * 	it describes the response type which this plugin should be
758
	 * 	handling.
759
	 * @param {boolean} [_global=false] Remove a global or local handler.
760
	 */
761
	unregisterJSONPlugin(_callback : Function, _context, _type : string, _global : boolean);
762
763
	/**
764
	 * implemented in egw_files.js
765
	 */
766
	/**
767
	 * Load and execute javascript file(s) in order
768
	 *
769
	 * @memberOf egw
770
	 * @param {string|array} _jsFiles (array of) urls to include
771
	 * @param {function} _callback called after JS files are loaded and executed
772
	 * @param {object} _context
773
	 * @param {string} _prefix prefix for _jsFiles
774
	 */
775
	includeJS(_jsFiles : string|string[], _callback : Function, _context? : object, _prefix? : string);
776
	/**
777
	 * Check if file is already included and optional mark it as included if not yet included
778
	 *
779
	 * Check does NOT differenciate between file.min.js and file.js.
780
	 * Only .js get's recored in files for further checking, if _add_if_not set.
781
	 *
782
	 * @param {string} _file
783
	 * @param {boolean} _add_if_not if true mark file as included
784
	 * @return boolean true if file already included, false if not
785
	 */
786
	included(_file : string, _add_if_not? : boolean) : boolean;
787
	/**
788
	 * Include a CSS file
789
	 *
790
	 * @param {string|array} _cssFiles full url of file to include
791
	 */
792
	includeCSS(_cssFiles : string|string[]) : void;
793
794
	/**
795
	 * implemented in egw_jsonq.js
796
	 */
797
	/**
798
	 * Send a queued JSON call to the server
799
	 *
800
	 * @param {string} _menuaction the menuaction function which should be called and
801
	 *   which handles the actual request. If the menuaction is a full featured
802
	 *   url, this one will be used instead.
803
	 * @param {array} _parameters which should be passed to the menuaction function.
804
	 * @param {function} _callback callback function which should be called upon a "data" response is received
805
	 * @param {object} _sender is the reference object the callback function should get
806
	 * @param {function} _callbeforesend optional callback function which can modify the parameters, eg. to do some own queuing
807
	 * @return string uid of the queued request
808
	 */
809
	jsonq(_menuaction : string, _parameters? : any[], _callback? : Function, _sender? : object, _callbeforesend? : Function) : string;
810
811
	/**
812
	 * implemented in egw_message.js
813
	 */
814
	/**
815
	 * Display an error or regular message
816
	 *
817
	 * Alle messages but type "success" are displayed 'til next message or user clicks on it.
818
	 *
819
	 * @param {string} _msg message to show or empty to remove previous message
820
	 * @param {string} _type 'help', 'info', 'error', 'warning' or 'success' (default)
821
	 * @param {string} _discardID unique string id (appname:id) in order to register
822
	 * the message as discardable. If no appname given, the id will be prefixed with
823
	 * current app. The discardID will be stored in local storage.
824
	 */
825
	message(_msg : string, _type? : "help"|"info"|"error"|"warning"|"success", _discardID? : string) : void;
826
	/**
827
	 * Are we running in a popup
828
	 *
829
	 * @returns {boolean} true: popup, false: main window
830
	 */
831
	is_popup() : boolean;
832
	/**
833
	 * Active app independent if we are using a framed template-set or not
834
	 *
835
	 * @returns {string}
836
	 */
837
	app_name() : string;
838
	/**
839
	 * Update app-header and website-title
840
	 *
841
	 * @param {string} _header
842
	 * @param {string} _app Application name, if not for the current app
843
	 */
844
	app_header(_header : string, _app? : string)
845
	/**
846
	 * Loading prompt is for building a loading animation and show it to user
847
	 * while a request is under progress.
848
	 *
849
	 * @param {string} _id a unique id to be able to distinguish loading-prompts
850
	 * @param {boolean} _stat true to show the loading and false to remove it
851
	 * @param {string} _msg a message to show while loading
852
	 * @param {string|jQuery _node} _node DOM selector id or jquery DOM object, default is body
853
	 * @param {string} _mode	defines the animation mode, default mode is spinner
854
	 *	animation modes:
855
	 *		- spinner: a sphere with a spinning bar inside (default)
856
	 *		- horizental: a horizental bar
857
	 *
858
	 * @returns {jquery dom object|null} returns jQuery DOM object or null in case of hiding
859
	 */
860
	loading_prompt(_id : string, _stat : boolean, _msg? : string, _node? : string|JQuery|HTMLElement, _mode? : "spinner"|"horizontal") : JQuery|null;
861
	/**
862
	 * Refresh given application _targetapp display of entry _app _id, incl. outputting _msg
863
	 *
864
	 * Default implementation here only reloads window with it's current url with an added msg=_msg attached
865
	 *
866
	 * @param {string} _msg message (already translated) to show, eg. 'Entry deleted'
867
	 * @param {string} _app application name
868
	 * @param {(string|number)} _id id of entry to refresh or null
869
	 * @param {string} _type either 'update', 'edit', 'delete', 'add' or null
870
	 * - update: request just modified data from given rows.  Sorting is not considered,
871
	 *		so if the sort field is changed, the row will not be moved.
872
	 * - edit: rows changed, but sorting may be affected.  Requires full reload.
873
	 * - delete: just delete the given rows clientside (no server interaction neccessary)
874
	 * - add: requires full reload for proper sorting
875
	 * @param {string} _targetapp which app's window should be refreshed, default current
876
	 * @param {(string|RegExp)} _replace regular expression to replace in url
877
	 * @param {string} _with
878
	 * @param {string} _msg_type 'error', 'warning' or 'success' (default)
879
	 * @param {object|null} _links app => array of ids of linked entries
880
	 * or null, if not triggered on server-side, which adds that info
881
	 */
882
	refresh(_msg : string, _app : string, _id? : string|number, _type? : "update"|"edit"|"delete"|"add"|null, 
883
			_targetapp? : string, _replace? : string|RegExp, _with? : string, _msg_type? : "error"|"warning"|"success", _links? : object) : void;
884
	/**
885
	 * Handle a push notification about entry changes from the websocket
886
	 *
887
	 * @param  pushData
888
	 * @param {string} pushData.app application name
889
	 * @param {(string|number)} pushData.id id of entry to refresh or null
890
	 * @param {string} pushData.type either 'update', 'edit', 'delete', 'add' or null
891
	 * - update: request just modified data from given rows.  Sorting is not considered,
892
	 *		so if the sort field is changed, the row will not be moved.
893
	 * - edit: rows changed, but sorting may be affected.  Requires full reload.
894
	 * - delete: just delete the given rows clientside (no server interaction neccessary)
895
	 * - add: requires full reload for proper sorting
896
	 * @param {object|null} pushData.acl Extra data for determining relevance.  eg: owner or responsible to decide if update is necessary
897
	 * @param {number} pushData.account_id User that caused the notification
898
	 */
899
	// internal: push(pushData : {app:string, id:string|number}, type?:"update"|"edit"|"delete"|"add", acl? : any, account_id: number}) : void;
900
901
	/**
902
	 * implemented in egw_notifications.js
903
	 */
904
	/**
905
	 *
906
	 * @param {string} _title a string to be shown as notification message
907
	 * @param {object} _options an object of Notification possible options:
908
	 *		options = {
909
	 *			dir:  // direction of notification to be shown rtl, ltr or auto
910
	 *			lang: // a valid BCP 47 language tag
911
	 *			body: // DOM body
912
	 *			icon: // parse icon URL, default icon is app icon
913
	 *			tag: // a string value used for tagging an instance of notification, default is app name
914
	 *			onclick: // Callback function dispatches on click on notification message
915
	 *			onshow: // Callback function dispatches when notification is shown
916
	 *			onclose: // Callback function dispateches on notification close
917
	 *			onerror: // Callback function dispatches on error, default is a egw.debug log
918
	 *		}
919
	 *	@return {boolean} false if Notification is not supported by browser
920
	 */
921
	notification(_title : string, _options : {dir?: "ltr"|"rtl"|"auto", lang: string, body?: string, icon?: string, 
922
		tag?: string, onclick: Function, onshow?: Function, onclose?: Function, onerror?: Function}) : false|void;
923
	/**
924
	 * Check Notification availability by browser
925
	 *
926
	 * @returns {Boolean} true if notification is supported and permitted otherwise false
927
	 */
928
	checkNotification() : boolean;
929
	/**
930
	 * Check if there's any runnig notifications and will close them all
931
	 *
932
	 */
933
	killAliveNotifications() : void;
934
935
	/**
936
	 * implemented in egw_open.js
937
	 */
938
	/**
939
	 * View an EGroupware entry: opens a popup of correct size or redirects window.location to requested url
940
	 *
941
	 * Examples:
942
	 * - egw.open(123,'infolog') or egw.open('infolog:123') opens popup to edit or view (if no edit rights) infolog entry 123
943
	 * - egw.open('infolog:123','timesheet','add') opens popup to add new timesheet linked to infolog entry 123
944
	 * - egw.open(123,'addressbook','view') opens addressbook view for entry 123 (showing linked infologs)
945
	 * - egw.open('','addressbook','view_list',{ search: 'Becker' }) opens list of addresses containing 'Becker'
946
	 *
947
	 * @param {string|number|object} id_data either just the id or if app=="" "app:id" or object with all data
948
	 * 	to be able to open files you need to give: (mine-)type, path or id, app2 and id2 (path=/apps/app2/id2/id"
949
	 * @param {string} app app-name or empty (app is part of id)
950
	 * @param {string} type default "edit", possible "view", "view_list", "edit" (falls back to "view") and "add"
951
	 * @param {object|string} extra extra url parameters to append as object or string
952
	 * @param {string} target target of window to open
953
	 * @param {string} target_app target application to open in that tab
954
	 * @param {boolean} _check_popup_blocker TRUE check if browser pop-up blocker is on/off, FALSE no check
955
	 * - This option only makes sense to be enabled when the open_link requested without user interaction
956
	 */
957
	open(id_data : string|number|object, app? : string, type? : "edit"|"view"|"view_list"|"add"|"list",
958
				   extra? : string|object, target? : string, target_app? : string, _check_popup_blocker? : boolean) : string;
959
	/**
960
	 * Open a link, which can be either a menuaction, a EGroupware relative url or a full url
961
	 *
962
	 * @param {string} _link menuaction, EGroupware relative url or a full url (incl. "mailto:" or "javascript:")
963
	 * @param {string} _target optional target / window name
964
	 * @param {string} _popup widthxheight, if a popup should be used
965
	 * @param {string} _target_app app-name for opener
966
	 * @param {boolean} _check_popup_blocker TRUE check if browser pop-up blocker is on/off, FALSE no check
967
	 * - This option only makes sense to be enabled when the open_link requested without user interaction
968
	 * @param {string} _mime_type if given, we check if any app has registered a mime-handler for that type and use it
969
	 */
970
	open_link(_link : string, _target? : string, _popup? : string, _target_app? : string, 
971
			  _check_popup_blocker? : boolean, _mime_type? : string) : Window|void;
972
	/**
973
	 * Open a (centered) popup window with given size and url
974
	 *
975
	 * @param {string} _url
976
	 * @param {number} _width
977
	 * @param {number} _height
978
	 * @param {string} _windowName or "_blank"
979
	 * @param {string|boolean} _app app-name for framework to set correct opener or false for current app
980
	 * @param {boolean} _returnID true: return window, false: return undefined
981
	 * @param {string} _status "yes" or "no" to display status bar of popup
982
	 * @param {boolean} _skip_framework
983
	 * @returns {Window|void}
984
	 */
985
	openPopup(_url : string, _width : number, _height : number|"availHeight", _windowName? : string, _app? : string|boolean, 
986
			  _returnID? : boolean, _status? : "yes"|"no", _skip_framework? : boolean) : Window|void;
987
	/**
988
	 * Get available height of screen
989
	 */
990
	availHeight() : number;
991
	/**
992
	 * Use frameworks (framed template) link handler to open a url
993
	 *
994
	 * @param {string} _url
995
	 * @param {string} _target
996
	 */
997
	link_handler(_url : string, _target : string) : void;
998
	/**
999
	 * Close current window / popup
1000
	 */
1001
	close() : void;
1002
	/**
1003
	 * Check if browser pop-up blocker is on/off
1004
	 *
1005
	 * @param {string} _link menuaction, EGroupware relative url or a full url (incl. "mailto:" or "javascript:")
1006
	 * @param {string} _target optional target / window name
1007
	 * @param {string} _popup widthxheight, if a popup should be used
1008
	 * @param {string} _target_app app-name for opener
1009
	 *
1010
	 * @return boolean returns false if pop-up blocker is off
1011
	 * - returns true if pop-up blocker is on,
1012
	 * - and re-call the open_link with provided parameters, after user interaction.
1013
	 */
1014
	_check_popupBlocker(_link : string, _target? : string, _popup? : string, _target_app? : string) : boolean;
1015
	/**
1016
	 * This function helps to append content/ run commands into an already
1017
	 * opened popup window. Popup windows now are getting stored in framework
1018
	 * object and can be retrived/closed from framework.
1019
	 *
1020
	 * @param {string} _app name of application to be requested its popups
1021
	 * @param {string} _method application method implemented in app.js
1022
	 * @param {object} _content content to be passed to method
1023
	 * @param {string|object} _extra url or object of extra
1024
	 * @param {regexp} _regexp regular expression to get specific popup with matched url
1025
	 */
1026
	openWithinWindow(_app : string, _method : string, _content : object, _extra? : string|object, _regexp? : RegExp) : void;
1027
1028
	/**
1029
	 * implemented in egw_ready.js
1030
	 */
1031
	/**
1032
	 * The readyWaitFor function can be used to register an event, that has
1033
	 * to be marked as "done" before the ready function will call its
1034
	 * registered callbacks. The function returns an id that has to be
1035
	 * passed to the "readDone" function once
1036
	 */
1037
	readyWaitFor() : string;
1038
	/**
1039
	 * The readyDone function can be used to mark a event token as
1040
	 * previously requested by "readyWaitFor" as done.
1041
	 *
1042
	 * @param _token is the token which has now been processed.
1043
	 */
1044
	readyDone(_token : string) : void;
1045
	/**
1046
	 * The ready function can be used to register a function that will be
1047
	 * called, when the window is completely loaded. All ready handlers will
1048
	 * be called exactly once. If the ready handler has already been called,
1049
	 * the given function will be called defered using setTimeout.
1050
	 *
1051
	 * @param _callback is the function which will be called when the page
1052
	 * 	is ready. No parameters will be passed.
1053
	 * @param _context is the context in which the callback function should
1054
	 * 	get called.
1055
	 * @param _beforeDOMContentLoaded specifies, whether the callback should
1056
	 * 	get called, before the DOMContentLoaded event has been fired.
1057
	 */
1058
	ready(_callback : Function, _context : object, _beforeDOMContentLoaded? : boolean) : void;
1059
	/**
1060
	 * The readyProgress function can be used to register a function that
1061
	 * will be called whenever a ready event is done or registered.
1062
	 *
1063
	 * @param _callback is the function which will be called when the
1064
	 * 	progress changes.
1065
	 * @param _context is the context in which the callback function which
1066
	 * 	should get called.
1067
	 */
1068
	readyProgress(_callback : Function, _context : object) : void;
1069
	/**
1070
	 * Returns whether the ready events have already been called.
1071
	 */
1072
	isReady() : boolean;
1073
1074
	/**
1075
	 * implemented in egw_tooltip.js
1076
	 */
1077
	/**
1078
	 * Binds a tooltip to the given DOM-Node with the given html.
1079
	 * It is important to remove all tooltips from all elements which are
1080
	 * no longer needed, in order to prevent memory leaks.
1081
	 *
1082
	 * @param _elem is the element to which the tooltip should get bound. It
1083
	 * 	has to be a jQuery node.
1084
	 * @param _str is the html or text code which should be shown as tooltip.
1085
	 * @param _isHtml true: add a html (no automatic quoting!), false (default): add as text
1086
	 */
1087
	tooltipBind(_elem : HTMLElement, _str : string, _isHtml? : boolean);
1088
	/**
1089
	 * Unbinds the tooltip from the given DOM-Node.
1090
	 *
1091
	 * @param _elem is the element from which the tooltip should get
1092
	 * removed. _elem has to be a jQuery node.
1093
	 */
1094
	tooltipUnbind(_elem : HTMLElement);
1095
}
1096
1097
/**
1098
 * Interface for application local methods (returned by global egw function)
1099
 */
1100
declare interface IegwAppLocal extends IegwWndLocal
1101
{
1102
	/**
1103
	 * implemented in egw_data.js
1104
	 */
1105
	/**
1106
	 * The dataFetch function provides an abstraction layer for the
1107
	 * corresponding "EGroupware\Api\Etemplate\Widget\Nextmatch::ajax_get_rows" function.
1108
	 * The server returns the following structure:
1109
	 * 	{
1110
	 * 		order: [uid, ...],
1111
	 * 		data:
1112
	 * 			{
1113
	 * 				uid0: data,
1114
	 * 				...
1115
	 * 				uidN: data
1116
	 * 			},
1117
	 * 		total: <TOTAL COUNT>,
1118
	 * 		lastModification: <LAST MODIFICATION TIMESTAMP>,
1119
	 * 		readonlys: <READONLYS>
1120
	 * 	}
1121
	 * If a uid got deleted on the server above data is null.
1122
	 * If a uid is omitted from data, is has not changed since lastModification.
1123
	 *
1124
	 * If order/data is null, this means that nothing has changed for the
1125
	 * given range.
1126
	 * The dataFetch function stores new data for the uid's inside the
1127
	 * local data storage, the grid views are then capable of querying the
1128
	 * data for those uids from the local storage using the
1129
	 * "dataRegisterUID" function.
1130
	 *
1131
	 * @param _execId is the execution context of the etemplate instance
1132
	 * 	you're querying the data for.
1133
	 * @param _queriedRange is an object of the following form:
1134
	 * 	{
1135
	 * 		start: <START INDEX>,
1136
	 * 		num_rows: <COUNT OF ENTRIES>
1137
	 * 	}
1138
	 * The range always corresponds to the given filter settings.
1139
	 * @param _filters contains the filter settings. The filter settings are
1140
	 * 	those which are crucial for the mapping between index and uid.
1141
	 * @param _widgetId id with full namespace of widget
1142
	 * @param _callback is the function that should get called, once the data
1143
	 * 	is available. The data passed to the callback function has the
1144
	 * 	following form:
1145
	 * 	{
1146
	 * 		order: [uid, ...],
1147
	 * 		total: <TOTAL COUNT>,
1148
	 * 		lastModification: <LAST MODIFICATION TIMESTAMP>,
1149
	 * 		readonlys: <READONLYS>
1150
	 * 	}
1151
	 * 	Please note that the "uids" comming from the server and the ones
1152
	 * 	being parsed to the callback function differ. While the uids
1153
	 * 	which are returned from the server are only unique inside the
1154
	 * 	application, the uids which are used on the client are "globally"
1155
	 * 	unique.
1156
	 * @param _context is the context in which the callback function will get
1157
	 * 	called.
1158
	 * @param _knownUids is an array of uids already known to the client.
1159
	 *  This parameter may be null in order to indicate that the client
1160
	 *  currently has no data for the given filter settings.
1161
	 */
1162
	dataFetch(_execId : string, _queriedRange : {start:number,num_rows:number},
1163
			  _filters : object, _widgetId : string, _callback : Function, _context : object,
1164
			  _knownUids? : string[]);
1165
	/**
1166
	 * Turn on long-term client side cache of a particular request
1167
	 * (cache the nextmatch query results) for fast, immediate response
1168
	 * with old data.
1169
	 *
1170
	 * The request is still sent to the server, and the cache is updated
1171
	 * with fresh data, and any needed callbacks are called again with
1172
	 * the fresh data.
1173
	 *
1174
	 * @param {string} prefix UID / Application prefix should match the
1175
	 *	individual record prefix
1176
	 * @param {function} callback_function A function that will analize the provided fetch
1177
	 *	parameters and return a reproducable cache key, or false to not cache
1178
	 *	the request.
1179
	 * @param {function} notice_function A function that will be called whenever
1180
	 *	cached data is used.  It is passed one parameter, a boolean that indicates
1181
	 *	if the server is or will be queried to refresh the cache.  Do not fetch additional data
1182
	 *	inside this callback, and return quickly.
1183
	 * @param {object} context Context for callback function.
1184
	 */
1185
	dataCacheRegister(prefix : string, callback_function : Function, notice_function : Function, context : object);
1186
	/**
1187
	 * Unregister a previously registered cache callback
1188
	 * @param {string} prefix UID / Application prefix should match the
1189
	 *	individual record prefix
1190
	 * @param {function} [callback] Callback function to un-register.  If
1191
	 *	omitted, all functions for the prefix will be removed.
1192
	 */
1193
	dataCacheUnregister(prefix : string, callback : Function);
1194
}
1195
1196
/**
1197
 * Some other global function and objects
1198
 *
1199
 * Please note the egw_* ones are deprecated in favor of the above API
1200
 */
1201
declare function egw_getFramework() : any;
1202
declare var chrome : any;
1203
declare var InstallTrigger : any;
1204
declare var app : {classes: any, [propName: string]: any};
1205
declare var egw_globalObjectManager : any;
1206
declare var framework : any;
1207
declare var egw_LAB : any;
1208
declare function egwIsMobile() : string|null;
1209
1210
declare var mailvelope : any;
1211
1212
declare function egw_refresh(_msg : string, app : string, id? : string|number, _type?, targetapp?, replace?, _with?, msgtype?);
1213
declare function egw_open();
1214
1215
declare function egw_getWindowLeft() : number;
1216
declare function egw_getWindowTop() : number;
1217
declare function egw_getWindowInnerWidth() : number;
1218
declare function egw_getWindowInnerHeight() : number;
1219
declare function egw_getWindowOuterWidth() : number;
1220
declare function egw_getWindowOuterHeight() : number;
1221